import React from 'react';
import axios from 'axios';
import {BrowserRouter as Router} from 'react-router-dom';

// 添加一个请求时的拦截器
axios.interceptors.request.use(function (config) {

  //请求发出去之前做的事
  // console.log('请求前的拦截');

  //抓取本地token，携带在请求头里
  let user = window.localStorage.getItem('user');
  user = user ? JSON.parse(user) : '';
  // console.log('plugins_axios',typeof user.token);
  config.headers={'token': user.token};
  // config.headers={'token': 5109990299432117};

  return config;//撒手
}, function (error) {
  // 在错误请求发出去之前，做的事

  return Promise.reject(error);
});


// 添加一个响应时的拦截器
axios.interceptors.response.use(function (response) {
  //响应回来 ->   做点事 -> 请求方
  // console.log('响应后的拦截');

  // 如果token错误或失效 跳转登录

  let router=new Router();//实例化 BrowserRouter

  if (response.data.err === 2 && !router.history.location.pathname.includes('/login')) {
    console.log('token 失败 跳转到login',router);

    window.location.href='/login?path='+router.history.location.pathname;//history模式

    /*router.history.push({  //hash 模式可以，history模式有问题
      pathname: '/login',
      search: "path="+router.history.location.pathname
    })*/

  }

  return response;//返回给请求方

}, function (error) {
  //  //响应回来 ->   处理错误信息 -> 请求方
  return Promise.reject(error);

});

window.axios = axios; // 使用:  无需导入 window.axios | axios   ×
React.Component.prototype.axios = axios; //使用: 无需导入 this.axios
export default axios; // 使用:  import axios from './plugins/axios'